package com.young.ums.service;

import com.young.common.util.Page;
import com.young.ums.model.Button;
import java.util.List;

/**
* 按钮信息服务接口
* Created by imrookie on 2018-10-28.
*/
public interface IButtonService {

    /**
     * 查询
     * @param obj
     * @return
     */
    List<Button> getList(Button obj);

    /**
     * 分页查询
     * @param obj
     * @param page
     * @return
     */
    List<Button> getPage(Button obj, Page page);

    /**
     * 查询单条
     * @param id
     * @return
     */
    Button get(String id);

    /**
     * 统计数量
     * @param obj
     * @return Integer 满足xx条件的数据有多少条
     */
    int count(Button obj);

    /**
     * 修改
     * @param obj
     * @return
     */
    int update(Button obj);

    /**
     * 删除
     * @param id
     * @return
     */
    int delete(String id);

    /**
     * 批量删除
     * @param idArr
     * @return
     */
    int delete(String[] idArr);

    /**
     * 插入
     * @param obj
     * @return
     */
    int insert(Button obj);

    /**
     * 创建按钮并且关联指定导航
     * @param button 按钮信息
     * @param navigateId 导航id
     * @return
     */
    int insertAndRelevanceNavigate(Button button, String navigateId);

    /**
     * 批量克隆按钮并关联到资源
     * @param buttonIds 待克隆的按钮编号集合
     * @param navigateId 资源编号
     * @param userId 当前登录用户编号
     * @param category 按钮分组
     * @return
     */
    int cloneButtonAndRelevanceNavigate(String[] buttonIds, String navigateId, String userId, String category);

    /**
     * 批量插入
     * @param list
     * @return
     */
    int batchInsert(List<Button> list);

    /**
     * 查询按钮分组
     * @return
     */
    List<String> getButtonCategoryList();

    /**
     * 根据资源ID查询按钮列表
     * @param navigateId 资源导航id
     * @return
     */
    List<Button> getButtonListByNavigateId(String navigateId);

    /**
     * 根据按钮id集合批量查询按钮信息
     * @param btnIds
     * @return
     */
    List<Button> getButtonListByIds(List<String> btnIds);

    /**
     * 获取资源下权限范围内的按钮
     * @param navigateId 资源id
     * @param userId 用户id
     * @return
     */
    List<Button> getButtonListInNavigate(String navigateId, String userId);
}